package com.tedu.API.IO;

import org.apache.commons.imaging.*;
import org.junit.Test;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * IO流----针对 图片
 *
 * 项目结构：Maven互联网型项目
 *    功能：下载第三方jar包【高手写好类，压缩jar文件---引入--使用类】
 *    第三方jar官方下载地址：百度搜:mvn仓库
 *           https://mvnrepository.com/
 *    Apache Commons Imaging 包 :针对IO流 图片传输流--封装
 *                                   处理各种图像格式外置包
 *                                   读入写出-JPEG,PNG,GIF,TIFF
 *    研究 第三方 xxx.jar 百度搜 Apache Commons-imaging使用
 *    类中存在大量静态块，通过类名直接调用
 *
 *    使用 Apache Commons Imaging jar 【包--压缩文件叫法
 *                                      库--使用类叫法】
 */
public class ImageFile {
    /**
     * Imaging 提供读写图片流的方法
     * 读：getBufferedImage() 可以通过File文件路径找到图片并且打印图片信息【宽高】
     *   返回值：BufferedImage 缓冲图片流
     */
    @Test
    public void testImaging() throws IOException, ImageReadException {
        //1.创建File文件类--找到图片路径地址+图片全称
        File file=new File("2.png");
        //2.Imaging图片的类,静态方法getBufferedImage() 获取图片信息
        BufferedImage bi=Imaging.getBufferedImage(file);
        //3.获取图片的信息
        int height=bi.getHeight();
        int width=bi.getWidth();
        System.out.println("宽"+width+"高"+height);
    }

    /**
     * writeImage(读入图片,写出图片的位置，图片格式，null) 写出一个图片
     */
    @Test
    public void testWI() throws IOException, ImageReadException, ImageWriteException {
        //1.读入一张图片
        File file=new File("2.png");
        BufferedImage bi=Imaging.getBufferedImage(file);
        //2.写出图片路径+全称
        File desc=new File("ma.png");
        //3.Imaging类--调用静态方法
        //version ImageFormat.format("png"); 指定图片格式
        //version2 ImageFormat.Png
        Imaging.writeImage(bi,desc,ImageFormats.PNG,null);
        System.out.println("写出成功~~~");

        File file1=new File("3.jpg");
        BufferedImage bi1= Imaging.getBufferedImage(file1);
        File dec2=new File("及你太没.jpg");
        Imaging.writeImage(bi1,dec2,ImageFormats.JPEG,null);
        System.out.println("完成");

    }
}
